服务端
- 安装
apt-get install wireguard
-
开启ipv4流量转发
/etc/sysctl.conf
net.ipv4.ip_forward = 1 #设置为1
-
进入到wireguard目录
/etc/wireguard
chmod -R 777 /etc/wireguard
- 生成服务端密钥对(私钥和公钥)
wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
- 创建
/etc/wireguard/wg0.conf
touch /etc/wireguard/wg0.conf
[Interface]
# 服务器的虚拟IP地址(选择一个不冲突的内网段)
Address = 10.1.1.1/24
# 监听端口(默认51820)
ListenPort = 51820
# 服务器的私钥(填入刚才生成的私钥内容)
PrivateKey = <服务器的私钥>
# 开启IP转发(为了能让客户端之间互相通信) eth0记得换
PostUp = sysctl -w net.ipv4.ip_forward=1
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
# --- 下面开始添加客户端(对等点) ---
# 客户端1:你的电脑
[Peer]
# 客户端1的公钥
PublicKey = <客户端1的公钥>
# 允许客户端1使用的IP地址,相当于给它分配了固定IP 10.1.1.2
AllowedIPs = 10.1.1.2/32
# 客户端2:你的另一台设备
[Peer]
PublicKey = <客户端2的公钥>
AllowedIPs = 10.1.1.3/32
- 启动服务端
systemctl enable wg-quick@wg0
systemctl start wg-quick@wg0
客户端
Windows
- 下载安装
https://www.wireguard.com/install/
界面操作->在隧道列表 新增隧道
写入以下
名称
[Interface]
PrivateKey = SHd3t5Tz038WY8yQWjZxisL4LzNRQRxvPlcRC56B/Gc=
Address = 10.1.1.2/24
[Peer]
PublicKey = /mw8vj3YqmzNxcKlKFdaIw9b/uB5B9+Zpy+IRE6umF4=
AllowedIPs = 10.1.1.0/24
Endpoint = 120.25.167.228:51820
PersistentKeepalive = 25
[Interface]
PrivateKey:这是新建时自动生成的。
Address: 这个是配置当前客户端的ip地址
DNS: dns服务器地址
[Peer]
PublicKey:服务端公钥,在服务端/etc/wireguard/publickey 文件下
AllowedIPs:允许的IP,也就是说访问什么ip时走wireguard。0.0.0.0/0 代表所有流量都走VPN(全隧道)
Endpoint:服务器ip和端口
PersistentKeepalive:保持连接活跃(对于NAT很重要)
Linux
- 安装
apt-get install wireguard
- 配置
cd /etc/wireguard
# 生成私钥并设置权限
wg genkey | tee privatekey && chmod 600 privatekey
# 根据私钥生成公钥
wg pubkey < privatekey > publickey
- 配置到服务端,服务端配置文件/etc/wireguard/wg0.conf添加下面内容
- 重启服务端
[Peer]
PublicKey = mOeMOFPG7wsa/KkTuXlZkQnlFYZFwcur8xVCNVusGFw= #客户端公钥
AllowedIPs = 10.1.1.5/32
- 客户端新增/etc/wireguard/wg0.conf文件
touch /etc/wireguard/wg0.conf
[Interface]
# 客户端虚拟 IP(必须与服务端分配的 IP 一致,注意 /32 表示单个 IP)
Address = 10.1.1.5/32
# 客户端私钥(从刚才生成的 privatekey 文件中复制)
PrivateKey = mLs1eUCJXhb9J+aiMm50PfmD21F2RYiMotIkZt3fHkE=
# DNS 服务器(可选,例如使用公共 DNS 或服务端内网 DNS)
#DNS = 8.8.8.8
[Peer]
# 服务端的公钥(从服务端获取)
PublicKey = /mw8vj3YqmzNxcKlKFdaIw9b/uB5B9+Zpy+IRE6umF4=
# 服务端的公网 IP 和端口
Endpoint = 120.25.167.228:51820
# 允许的 IP:这里设置 10.1.1.0/24 表示只有访问 VPN 网段的流量才走隧道
# 如果想所有流量都走 VPN,可以改为 0.0.0.0/0
AllowedIPs = 10.1.1.0/24
# 保持连接的存活时间(对于 NAT 后面的客户端很重要)
PersistentKeepalive = 25
- 重启服务
systemctl restart wg-quick@wg0
或者
wg-quick up wg0
- 启动连接测试**(记得重启或重新加载服务端文件**)
ping 10.1.1.1 或者其他
- 设置开机自启
systemctl enable wg-quick@wg0
Android
下载
https://www.wireguard.com/install/
界面配置
本地
- 名称:
- 私钥:自己生成
- 公钥:自己生成,要复制到服务端
- 局域网ip:自己的ip 注意x.x.x.x/24 这个24
- dns服务器:可以不填
添加节点
远程
- 公钥:服务器公钥
- 保活间隔:25s一次心跳
- 对端:Endpoint就这个配置,120.25.167.228:51820
- 路由的ip地址段:10.1.1.0/24 注意x.x.x.x/24 这个24